package task4;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author Administrator
 * 第一种方式：基本字节流一次读写一个字节
 * 第二种方式：基本字节流一次读写一个字节数组
 * 第三种方式：字节缓冲流一次读写一个字节
 * 第四种方式：字节缓冲流一次读写一个字节数组
 */
public class Copy4Methods {
    public static void main(String[] args) throws IOException {
        long start=System.currentTimeMillis();
        //method1("d:\\copy.mp4","copy1.mp4");
        //method2("d:\\copy.mp4","copy2.mp4");
        // method3("d:\\copy.mp4","copy3.mp4");
        //method4("d:\\copy.mp4","copy4.mp4");
        long end=System.currentTimeMillis();
        System.out.println("共耗时"+(end-start)+"毫秒");
    }
//高效字节流 1
    private static void method1(String srcString, String destString)throws IOException{
      FileInputStream fis=new FileInputStream("D:\\copy.mp4");
      byte[] bys=new byte[1024];
      int len=0;
      while((len=fis.read(bys))!=-1){
        String s1=new String(bys,0,len);
        System.out.println(s1);
      }
      fis.close();
    }
    //2
    private static void method2(String srcString, String destString) throws IOException{
      FileInputStream fis=new FileInputStream("D:\\copy.mp4");
      FileOutputStream fos=new FileOutputStream("copy2.mp4");
      byte[] bys=new byte[1024];
      int len=0;
      while ((len=fis.read(bys))!=-1){
        fos.write(bys,0,len);
      }
      fos.close();
      fis.close();
    }
    //3
    private static void method3(String srcString, String destString) throws IOException{
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcString));
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destString));
        int by=0;
        while ((by=bis.read())!=-1){
            bos.write(by);
        }
        bis.close();
        bos.close();
    }
    //4
    private static void method4(String srcString, String destString) throws IOException{
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcString));
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destString));
        byte[] bys=new byte[1024];
        int len=0;
        while ((len=bis.read(bys))!=-1){
            bos.write(len);
        }
        bis.close();
        bos.close();
    }
}
